package main

import (
	"fmt"
	"strconv"
)

func main() {
	var input string
	fmt.Println("请输入一个字符串：")
	fmt.Scanln(&input)

	compressed := compressString(input)

	fmt.Printf("压缩后的字符串：%s\n", compressed)
}

func compressString(s string) string {
	length := len(s)
	if length <= 1 {
		return s
	}

	// 使用一个字符串来存储压缩后的结果
	result := ""

	// 初始化当前字符和计数器
	currentChar := s[0]
	count := 1

	// 遍历字符串
	for i := 1; i < length; i++ {
		if s[i] == currentChar {
			// 如果当前字符与前一个字符相同，则增加计数器
			count++
		} else {
			// 否则，将前一个字符和计数器拼接到结果字符串中
			result += string(currentChar) + strconv.Itoa(count)

			// 更新当前字符和计数器
			currentChar = s[i]
			count = 1
		}
	}

	// 添加最后一个字符和计数器到结果字符串中
	result += string(currentChar) + strconv.Itoa(count)

	// 返回结果字符串
	return result
}
